package org.gws.alaska.metamodel.compiler

/***
 * AlaskaMetaExtender v 0.1 alpha
 * This class extends you domain model with special 
 * syntax. In that way, Groovy is enable to parse code with 
 * special demand  
 * 
 * TODO: We Engineers this part, i'll try to implements this 
 * in reusable way. We must have the possibility to choose 
 * the type of substitustions. 
 * 
 */
abstract class AlaskaMetaExtender {
	
	/**
	 * Rimpiazza la parola chiave con class 
	 * Es. keys ID => class ID 
	 * @param line
	 * @return stringa modficata 
	 *  
	 */
	public abstract String replaceKeyWordWithClass(String line);
		
	/**
	 * Replace the keyPattern with the replace parameter. 
	 * @param line buffer line 
	 * @param pattern pattern to replace 
	 * @param replace content replace
	 * @return the string replaced 
	 */
	 
	public abstract String replacePatternKeyword(String line, String pattern, String replace)

	/**
	 * Find a metaItem in the current line of interpreter 
	 * @param line
	 * @return
	 */
	public abstract boolean lookupMetaName(String line);

	
	/**
	 * 
	 */
	public abstract void resetAll(); 

	
	/**
	 * 
	 * @param name
	 */
	public abstract void resetMetaItem(String name); 
	
	
	/**
	 * @param metaItem
	 */
	public abstract void loadMetaItems(metaItems = [])
	
}
